package nl.haemers.collections.interfaces 
{
	import nl.haemers.collections.interfaces.IIterator;
	
	/**
	 * ...
	 * @author Jonathan Haemers
	 */
	public interface IListIterator extends IIterator
	{
		/**
		 * Inserts the specified element into the list (optional operation).
		 * @param	e
		 */		
		function add(e:Object) : void;
		
		/**
		 * Returns true if this list iterator has more elements when traversing the list in the reverse direction.
		 * @return
		 */
		function hasPrevious() : Boolean;
		
		/**
		 * Returns the index of the next element in the list.
		 * @return
		 */
		function nextIndex() : int;
		
		/**
		 * Returns the previous element in the list.
		 * @return
		 */
		function previous() : Object;
		
		/**
		 *  Returns the index of the previous element int the list.
		 * @return
		 */
		function previousIndex() : int;
		
		/**
		 * Replaces the last element returned by next or previous with the specified element (optional operation).
		 * @param	e
		 */
		function set(e:Object) : void;
	}	
}